package com.ruoyi.activiti;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.runtime.ProcessInstance;

import java.util.HashMap;
import java.util.Map;

/*
流程添加business实例，BussinessKey存在于Activiti中的act_ru_execution表中
类：BusinessKeyAdd
 */
public class BusinessKeyAdd {

    /***
     * 启动一个流程实例
     * @param args
     */
    public static void main(String[] args) {
        //1.得到ProcessEngine对象
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        //2.得到RunService对象
        RuntimeService runtimeService = defaultProcessEngine.getRuntimeService();
        //3.创建流程实例,同时要添加业务标识BusinessKey(第二个参数)，假设请假单的id是10001， 这个案例比基础的启动流程多了 第二个参数
        //其中第一个参数是流程定义的id，可不是流程bpmn的文件名哦，具体看该bpmn文件编辑页面的id属性的value是多少，
        // 创建流程变量, yanruTODO奇怪，这个参数 启动流程之后查不到参数数据
        Map<String,Object> variables = new HashMap<String,Object>();
        variables.put("请假人", "冯小刚");
        variables.put("请假单id", "12000");
        variables.put("userId", "张燕茹");
        variables.put("inputUser", "有问题的参数");//现在idea的bpmn插件有bug，我编辑添加了这个属性，但是面板保存后就看不到这个属性了，但是实际这个变量可能添加成功了
        // 在启动时设置流程变量
        ProcessInstance holiday = runtimeService.startProcessInstanceByKey("myProcess_1" , "12000", variables);
        //4.输出流程实例的相关信息
        System.out.println("部署ID："+holiday.getDeploymentId());
        System.out.println("名称："+holiday.getName());
        System.out.println("ID："+holiday.getId());
        System.out.println("BusinessKey："+holiday.getBusinessKey());
        System.out.println("实例ID："+holiday.getActivityId());
        System.out.println("实例的参数:"+holiday.getProcessVariables().toString());
        System.out.println("准备放入参数:"+variables);

    }
}
